iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
0

Scylla支援一般常見的data type。如INT,BIGINT,FLOAT,DECIMAL,VARCHAR,TEXT,BLOB,DATE,TIMESTAMP等等。
也支援集合類型的欄位型態Map,List,Set。集合類型的欄位適用於有範圍的集合,例如一個人的身高體重,年齡血型。如果是紀錄一個人每小時的心跳數,這種會無限增長的類型,就不適合使用集合來儲存。
Scylla還有一種特別的型態counter,除此之外也可以由使用者自行定義UDT(user defined types),以下用一些例子來說明。

  • Maps
    Map以一組key-value組成,每一組key都是唯一值。我們新增一個map欄位用來記錄身高體重。
    https://ithelp.ithome.com.tw/upload/images/20200909/20113220c3yLi7ldCH.png
    寫入一筆資料後查詢出來的結果就像這樣。
    https://ithelp.ithome.com.tw/upload/images/20200909/201132203gkG115E7X.png

  • Sets
    Set是由不重複的值所組成,範例如下。
    https://ithelp.ithome.com.tw/upload/images/20200909/20113220sxVMTeyduV.png
    寫入資料後查詢的結果。
    https://ithelp.ithome.com.tw/upload/images/20200909/20113220xYXScilJgo.png

  • Lists
    List是由可重複的值所組成,其範例如下。
    https://ithelp.ithome.com.tw/upload/images/20200909/20113220o0JwGb0KPJ.png
    https://ithelp.ithome.com.tw/upload/images/20200909/20113220SpHfHLHSxQ.png
    要注意的一點是,當要update List中數值的時候,要確認是否超出List內包括的數量。例如List中只有三個數值位置由0開始,這個List不存在3這個位置

  • Counter
    Counter是用來儲存計數的欄位型態,使用上有一些限制。
    首先Counter不能被當作PK,且同一個table中除了PK只能有counter的欄位型態。
    另外當counter更新因為某些原因導致失敗,重做一次update並不保證會對counter作重新計算。
    修改counter數值,必須要用update的方式,counter初始值會被視為0。

  • UDT
    Scylla允許使用者自訂欄位型態。在3.2的版本之前,UDT是frozen的,表示無法針對UDT內的某個值做異動,更新必須是整個UDT全部更新。
    https://ithelp.ithome.com.tw/upload/images/20200909/2011322076qlhmVSLr.png
    我們改在4.0的版本來執行就正常了。
    https://ithelp.ithome.com.tw/upload/images/20200909/201132205cv017u6uj.png
    https://ithelp.ithome.com.tw/upload/images/20200909/20113220Iqyyo82aL3.png


上一篇
Day14 DataModel - Primary Key(你以為結束了嗎)
下一篇
Day16 DataModel - TTL
系列文
ScyllaDB實作紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言